// import { ArrayNotEmpty, Equals, IsArray, IsDefined, IsNumber, IsString, Length } from 'class-validator'
// import { ComplexType } from '../utils/validator'

// class Bar {
//     /// 不是null和undefined
//     @IsDefined()
//         name: string = ''
// }

// class Foo {

//     @ComplexType([String])
//         username: string = ''

//     //@IsEmail()
//     @ComplexType([String, undefined, null])
//         email: Nullable<string> = ''

//     @IsNumber()
//         age: number = 0

//     @ComplexType([undefined, null, String], { each: true, validateNested: true }, [Number, Bar])
//         list: (Number | Bar)[] | undefined | null | string;

//     /// 多个注解之间的校验是and关系
//     @Equals('aaa')
//     @IsString()
//         phone: string = ''

//     @Length(4, 12)
//         password: string = ''

//     @IsArray()
//     @ArrayNotEmpty()
//     kkk: Array<any> = []

//     /// 对字段进行内部校验（有问题，还是用自己的）
//     //@ValidateNested()
//     @IsDefined()
//     @ComplexType([Bar], { validateNested: true })
//     bar: Bar = new Bar()

// }

// class Ttt {
//     aa: string = 'dd'
//     // 会初始化为undefined
//     bb!: string
// }

// export { Foo, Bar, Ttt }